Amazon EC2インスタンスの自身のMetadataを簡単に取得する
Amazon EC2のメタデータを簡単に取得する方法
Amazon EC2はたくさんのメタデータを持っています。SDKやAPIを経由して取得する方法が一般的ですが、自身のインスタンス内で簡単に問い合わせる方法があります。以下のアドレスにアクセスすることです。
http://169.254.169.254/
実際にどんな情報が取得できるのか試してみたいと思います。
$ wget -q -O - http://169.254.169.254/ 1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01 2009-04-04 2011-01-01 latest
取得したファイルの中身はテキストの羅列です。
トップレベルのMetadataを表示する
$ wget -q -O - http://169.254.169.254/latest/meta-data/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ hostname instance-action instance-id instance-type kernel-id local-hostname local-ipv4 mac network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups
このMetadata文字列を付加して実行してみます。
$ wget -q -O - http://169.254.169.254/latest/meta-data/ami-id ami-300caa31 $ wget -q -O - http://169.254.169.254/latest/meta-data/hostname ip-10-146-159-226.ap-northeast-1.compute.internal $ wget -q -O - http://169.254.169.254/latest/meta-data/instance-id i-84350986 $ wget -q -O - http://169.254.169.254/latest/meta-data/mac 12:31:50:00:38:12 $ wget -q -O - http://169.254.169.254/latest/meta-data/public-ipv4 175.41.196.159 $ wget -q -O - http://169.254.169.254/latest/meta-data/local-ipv4 10.146.59.229
まとめ
Amazon EC2で起動したインスタンス自身の情報を取得するためには、魔法のアドレスにアクセスすれば良い事が分かりました。これは、外部からのアクセスでは取得できません。使いどころは、たとえばcronで定期的に情報をチェックして外部に報告するとかが考えられます。具体的には、CloudWatchのカスタムメトリクスを作成する場合です。ということで、自身のMetadataを知って上に報告しましょう!